import axios from 'axios'

axios.interceptors.response.use(
  response => {
    // return response
    return response.data.data
  }
)

async function getList() {
  // axios({
  //   url: '',  // 可以带params参数    /user/3
  //   method: 'GET',
  //   headers: {}, // header参数
  //   params: {}, // query参数
  //   data: {} // body参数
  // })
  const result = await axios.get<any, Product>('/xxx')
  result.name
}


/* 
需求:
  创建一个函数, 实现功能: 根据指定的数量 count 和数据 value , 
  创建一个包含 count 个 value 的数组
*/
function createArray(count: number, value: any) {
  const arr: any[] = []
  for (let index = 0; index < count; index++) {
    arr.push(value)
  }
  return arr
}

const arr = createArray(3, 'abc')
arr[0].length2
const arr2 = createArray(3, 123.12)
arr2[1].toFixed(1)

/* 
1. 定义泛型: 定义函数时, 函数名的右侧  <泛型名称>   T/K/V
2. 使用泛型: 形参/函数体
3. 指定具体类型: 调用函数时, 函数名的右侧  <具体类型>
*/
function createArray2<T>(count: number, value: T) {
  const arr: T[] = []
  for (let index = 0; index < count; index++) {
    arr.push(value)
  }
  return arr
}

const arr3 = createArray2<number>(2, 12.23)
arr3[1].toFixed(1)
const arr4 = createArray2<string>(3, 'abcd')
arr4[1].length


// 定义包含length属性的接口
interface Lengthable {
  length: number
}

// 感觉TS中将泛型看待成接口还是类?   
// T是一个特别的接口
function getLength<T extends Lengthable>(value: T): number {
  return value.length
}